/******************************************************************************* * Copyright (c) 2017 Red Hat. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Red Hat - Initial Contribution *******************************************************************************/ package org.eclipse.che.api.languageserver.generator; import java.io.PrintWriter; public class ClientJsonImpl implements JsonImpl { @Override public String element() { return "JSONValue"; } @Override public String object() { return "JSONObject"; } @Override public String array() { return "JSONArray"; } @Override public String nullValue() { return "JSONNull.getInstance()"; } @Override public Object string() { return "JSONString"; } @Override public Object number() { return "JSONNumber"; } @Override public String boolValue(String value) { return String.format("JSONBoolean.getInstance(%1$s)", value); } @Override public String arrayValue(String jsonValName) { return String.format("%1$s.isArray()", jsonValName); } @Override public Object objectValue(String value) { return String.format("%1$s.isObject()", value); } @Override public String asBoolean(String valueName) { return String.format("%1$s.isBoolean().booleanValue()", valueName); } @Override public String asDouble(String valueName) { return String.format("%1$s.isNumber().doubleValue()", valueName); } @Override public String asString(String valueName) { return String.format("%1$s.isString().stringValue()", valueName); } @Override public String parse(String valueName) { return String.format("JSONParser.parseStrict(%1$s)", valueName); } @Override public String put() { return "put"; } public String add(String arrayName, String valueName) { return String.format("%1$s.set(%1$s.size(), %2$s);", arrayName, valueName); } @Override public void iterateObject(String indent, PrintWriter out, String objectName, PropertyHandler handler) { String keyName = objectName + "k"; out.println(indent + String.format("for(String %1$s : %2$s.keySet()) {", keyName, objectName)); handler.handle(keyName, String.format("%1$s.get(%2$s)", objectName, keyName)); out.println(indent + "}"); } @Override public String isNull(String jsonValName) { return jsonValName + ".isNull() != null"; } @Override public void writeImports(PrintWriter out) { out.println("import com.google.gwt.json.client.JSONParser;"); out.println("import com.google.gwt.json.client.JSONObject;"); out.println("import com.google.gwt.json.client.JSONArray;"); out.println("import com.google.gwt.json.client.JSONString;"); out.println("import com.google.gwt.json.client.JSONNumber;"); out.println("import com.google.gwt.json.client.JSONBoolean;"); out.println("import com.google.gwt.json.client.JSONValue;"); out.println("import com.google.gwt.json.client.JSONNull;"); } }